#! /usr/bin/env node

/* 
  脚手架工作原理：
    命令行询问用户一些预设问题
    结合问题回答结果和模板文件，生成约定项目结构
 */


import inquirer from 'inquirer';
import path from 'path';
import fs from 'fs';
import { fileURLToPath } from 'url';
import ejs from 'ejs';

// 启用esmodule后，__dirname和__filename都不存在了，使用以下方式代替
const __dirname = path.dirname(fileURLToPath(import.meta.url))

inquirer.prompt([
  {
    type: 'input',
    name: 'name',
    message: 'input your project name'
  }
])
  .then((anwsers) => {

    // 模板目录
    const templateDir = path.join(__dirname, 'templates')
    // 输出目录
    const destDir = path.join(process.cwd(), 'dist')

    // 判断目录是否存在，不存在创建
    fs.existsSync(destDir)
    if (!fs.existsSync(destDir)) fs.mkdirSync(destDir)

    fs.readdir(templateDir, (err, files) => {
      if (err) throw err

      // 遍历并渲染templates下的文件
      files.forEach(file => {
        ejs.renderFile(path.join(templateDir, file), anwsers, (err, result) => {
          if (err) throw err
          
          fs.writeFileSync(path.join(destDir, file), result)
        })
      })
    })
  })